﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using GeralTableAdapters;

public partial class GRH_SP_Sistema_Funcionarios : System.Web.UI.Page
{
    protected void LimpaCampos()
    {
        chapa.Text = "";
        nome.Text = "";
        cargo.Text = "";
        email.Text = "";
        senha.Text = "";
        senha_confirmar.Text = "";
        Lib_Doc_GRH.Checked = false;
        Validade_Lib_Doc_GRH.Text = "";
        Lib_Sol_Veic.Checked = false;
        Validade_Lib_Sol_Veic.Text = "";
        Acesso_Sistema_SP.Checked = false;
        Validade_Acesso_Sistema_SP.Text = "";
        Acesso_Sistema_SDP.Checked = false;
        Validade_Acesso_Sistema_SDP.Text = "";
        Acesso_Sistema_CPD.Checked = false;
        Validade_Acesso_Sistema_CPD.Text = "";
        Acesso_Sistema_GSG.Checked = false;
        Validade_Acesso_Sistema_GSG.Text = "";
        Acesso_Sistema_SCPA.Checked = false;
        Validade_Acesso_Sistema_SCPA.Text = "";
        Autoriza_Xerox.Checked = false;
        Validade_Autoriza_Xerox.Text = "";
        Baixa_Xerox.Checked = false;
        Validade_Baixa_Xerox.Text = "";
        Validade_Acumula_Gerencia.Text = "";
        Acesso_Faculdade.Checked = false;
        Validade_Acesso_Faculdade.Text = "";
        Programa_Ferias.Checked = false;
        Gerente.Checked = false;
        Conta_Master.Checked = false;
        Nao_Tem_Ferias.Checked = false;
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["chapa"] == null)
        {
            Response.Redirect("../../../mensagens_sistema.aspx?id_mensagem=2");
        }
        else if (Session["Acesso_Sistema_SP"].ToString() != "True" && Session["Conta_Master"].ToString() != "True")
        {
            Response.Redirect("../../../mensagens_sistema.aspx?id_mensagem=12");
        }
    }
    protected void ImageButton2_Click(object sender, ImageClickEventArgs e)
    {
        lMensagem.Visible = true;
        lMensagem.ForeColor = System.Drawing.Color.Black;
        GeralBLL geral = new GeralBLL();
        DataTable consultaUsuario = geral.GetUsuarioByChapa(chapa.Text);
        if (Registrar_Ferias_Dele.Checked == true && Vencimento_Ferias_Dele.Date.ToString("d/ m/ yyyy") == "1/ 0/ 0001")
        {
            lMensagem.Text = "Se você escolheu registrar as férias do funcionário, informe a data de vencimento da mesma";
            lMensagem.ForeColor = System.Drawing.Color.Red;
        }
        else if (consultaUsuario.Rows.Count > 0)
             {
                lMensagem.Text = "Este chapa já foi cadastrada no sistema";
                lMensagem.ForeColor = System.Drawing.Color.Red;
             }
            else
            {
                GeralBLL instrucao = new GeralBLL();
                DateTime? validadeLibDocGRH = null;
                DateTime? validadeLibSolVeic = null;
                DateTime? validadeAcessoSistemaSP = null;
                DateTime? validadeAcessoSistemaCPD = null;
                DateTime? validadeAcessoSistemaGSG = null;
                DateTime? validadeAcessoSistemaSDP = null;
                DateTime? validadeAcessoSistemaSCPA = null;
                DateTime? validadeAcessoSistemaUEAD = null;
                DateTime? validadeAutorizaXerox = null;
                DateTime? validadeBaixaXerox = null;
                DateTime? validadeAcessoFaculdade = null;
                DateTime? validadeAcumulaGerencia = null;
                DateTime? vencimentoFeriasDele = null;

                if (Validade_Lib_Doc_GRH.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                    validadeLibDocGRH = Validade_Lib_Doc_GRH.Date;
                if (Validade_Lib_Sol_Veic.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                    validadeLibSolVeic = Validade_Lib_Sol_Veic.Date;
                if (Validade_Acesso_Sistema_SP.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                    validadeAcessoSistemaSP = Validade_Acesso_Sistema_SP.Date;
                if (Validade_Acesso_Sistema_CPD.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                    validadeAcessoSistemaCPD = Validade_Acesso_Sistema_CPD.Date;
                if (Validade_Acesso_Sistema_GSG.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                    validadeAcessoSistemaGSG = Validade_Acesso_Sistema_GSG.Date;
                if (Validade_Acesso_Sistema_SDP.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                    validadeAcessoSistemaSDP = Validade_Acesso_Sistema_SDP.Date;
                if (Validade_Acesso_Sistema_SCPA.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                    validadeAcessoSistemaSCPA = Validade_Acesso_Sistema_SCPA.Date;
                if (Validade_Acesso_Sistema_UEAD.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                    validadeAcessoSistemaUEAD = Validade_Acesso_Sistema_UEAD.Date;
                if (Validade_Autoriza_Xerox.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                    validadeAutorizaXerox = Validade_Autoriza_Xerox.Date;
                if (Validade_Baixa_Xerox.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                    validadeBaixaXerox = Validade_Baixa_Xerox.Date;
                if (Validade_Acesso_Faculdade.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                    validadeAcessoFaculdade = Validade_Acesso_Faculdade.Date;
                if (Validade_Acumula_Gerencia.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                    validadeAcumulaGerencia = Validade_Acumula_Gerencia.Date;
                if (Vencimento_Ferias_Dele.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                    vencimentoFeriasDele = Vencimento_Ferias_Dele.Date;
                
                //if (instrucao.InsereUsuario(chapa.Text, nome.Text, cpf.Text, cargo.Text, email.Text, Lotacao.SelectedItem.ToString(), Convert.ToInt32(Cod_Lotacao.SelectedValue), senha.Text, Lib_Doc_GRH.Checked, validadeLibDocGRH, Lib_Sol_Veic.Checked, validadeLibSolVeic, Acesso_Sistema_SP.Checked, validadeAcessoSistemaSP, Acesso_Sistema_CPD.Checked, validadeAcessoSistemaCPD, Acesso_Sistema_GSG.Checked, validadeAcessoSistemaGSG, Acesso_Sistema_SDP.Checked, validadeAcessoSistemaSDP, Acesso_Sistema_SCPA.Checked, validadeAcessoSistemaSCPA, Autoriza_Xerox.Checked, validadeAutorizaXerox, Baixa_Xerox.Checked, validadeBaixaXerox, Acesso_Faculdade.Checked, validadeAcessoFaculdade, Programa_Ferias.Checked, Gerente.Checked, Conta_Master.Checked, Nao_Tem_Ferias.Checked, Convert.ToInt32(Acumula_Gerencia.SelectedValue), validadeAcumulaGerencia, Acesso_Sistema_UEAD.Checked, validadeAcessoSistemaUEAD, Registrar_Ferias_Dele.Checked, vencimentoFeriasDele, DescontoLanchonete.Checked, cAcessoOcorrenciasPonto.Checked, cComunicacaoAulas.Checked))
                if (InserirUsuario(chapa.Text, nome.Text, cpf.Text, cargo.Text, email.Text, Lotacao.SelectedItem.ToString(), Convert.ToInt32(Cod_Lotacao.SelectedValue), senha.Text, Lib_Doc_GRH.Checked, validadeLibDocGRH,
                                   Lib_Sol_Veic.Checked, validadeLibSolVeic, Acesso_Sistema_SP.Checked, validadeAcessoSistemaSP, Acesso_Sistema_CPD.Checked, validadeAcessoSistemaCPD,
                                   Acesso_Sistema_GSG.Checked, validadeAcessoSistemaGSG, Acesso_Sistema_SDP.Checked, validadeAcessoSistemaSDP, Acesso_Sistema_SCPA.Checked,
                                   validadeAcessoSistemaSCPA, Autoriza_Xerox.Checked, validadeAutorizaXerox, Baixa_Xerox.Checked, validadeBaixaXerox,
                                   Acesso_Faculdade.Checked, validadeAcessoFaculdade, Programa_Ferias.Checked, Gerente.Checked, Conta_Master.Checked, Nao_Tem_Ferias.Checked, Convert.ToInt32(Acumula_Gerencia.SelectedValue),
                                   validadeAcumulaGerencia, Acesso_Sistema_UEAD.Checked, validadeAcessoSistemaUEAD, DescontoLanchonete.Checked, cAcessoOcorrenciasPonto.Checked, cComunicacaoAulas.Checked))
                {
                    lblMensagem.ForeColor = System.Drawing.Color.Blue;
                    lblMensagem.Text = "Funcionário cadastrado com sucesso! <hr />";
                }
                else
                {
                    lblMensagem.ForeColor = System.Drawing.Color.Blue;
                    lblMensagem.Text = "Ocorreu um problema na inserção do usuário <hr />";
                }
            }
    }
    protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        LimpaCampos();
        Cod_Lotacao.Items.Clear();
        Lotacao.Items.Clear();
        Acumula_Gerencia.Items.Clear();
        tNome.Text = "";
        dChapa.Items.Clear();

        if (RadioButtonList1.SelectedValue == "2" || RadioButtonList1.SelectedValue == "3" || RadioButtonList1.SelectedValue == "4")
        {
            Label1.Visible = true;
            tNome.Visible = true;
            bPesquisar.Visible = true;
            dChapa.Visible = true;
        }
        if (RadioButtonList1.SelectedValue == "1") // cadastrar
        {
            LimpaCampos();
            Label1.Visible = false;
            tNome.Visible = false;
            bPesquisar.Visible = false;
            dChapa.Visible = false;
            bBaixar.Visible = false;
            bAlterar.Visible = false;
            bReativar.Visible = false;
            bCadastrar.Visible = true;
            //Preencha as dropdownlists
            ListItem iCodLotacao = new ListItem("Selecione a gerência", "-1");
            Cod_Lotacao.Items.Add(iCodLotacao);
            iCodLotacao = new ListItem("Selecione a gerência", "0");
            Acumula_Gerencia.Items.Add(iCodLotacao);

            UnidadesTableAdapter adapter = new UnidadesTableAdapter();
            DataTable unidades = adapter.GetUnidades();
            foreach (Geral.UnidadesRow linha in unidades.Rows)
            {
                iCodLotacao = new ListItem(linha.Lotacao, linha.Cod_Lotacao.ToString());
                Cod_Lotacao.Items.Add(iCodLotacao);
                Acumula_Gerencia.Items.Add(iCodLotacao);
            }
        }
        if (RadioButtonList1.SelectedValue == "2") // alterar
        {
            bCadastrar.Visible = false;
            bBaixar.Visible = false;
            bReativar.Visible = false;
            bAlterar.Visible = true;
        }

        if (RadioButtonList1.SelectedValue == "3") // baixar
        {
            bAlterar.Visible = false;
            bCadastrar.Visible = false;
            bReativar.Visible = false;
            bBaixar.Visible = true;
        }

        if (RadioButtonList1.SelectedValue == "4") // reativar
        {
            bAlterar.Visible = false;
            bCadastrar.Visible = false;
            bReativar.Visible = true;
            bBaixar.Visible = false;
        }

    }
    protected void bPesquisar_Click(object sender, ImageClickEventArgs e)
    {
        dChapa.Items.Clear();
        ListItem novoItem = new ListItem("Selecione o funcionário", "0");
        dChapa.Items.Add(novoItem);
        if (RadioButtonList1.SelectedValue.ToString() == "4") //reativar
            dsUsuariosNome.SelectMethod = "GetUsuariosBaixadosByNome";
        else
            dsUsuariosNome.SelectMethod = "GetUsuariosByNome";
    }
    protected void dChapa_SelectedIndexChanged(object sender, EventArgs e)
    {
        GeralBLL geral = new GeralBLL();
        DataTable usuarioSelecionado = geral.GetUsuarioByChapa(dChapa.SelectedValue);
        chapa.Text = usuarioSelecionado.Rows[0]["chapa"].ToString();
        nome.Text = usuarioSelecionado.Rows[0]["nome"].ToString();
        cpf.Text = usuarioSelecionado.Rows[0]["cpf"].ToString();
        cargo.Text = usuarioSelecionado.Rows[0]["cargo"].ToString();
        email.Text = usuarioSelecionado.Rows[0]["email"].ToString();
        
        //preenche o campo cod_lotacao
        UnidadesTableAdapter adapter = new UnidadesTableAdapter();
        DataTable unidades = adapter.GetUnidades();
        int i = 0;
        int indice = 0;
        ListItem iCodLotacao = null;

        foreach (Geral.UnidadesRow linha in unidades.Rows)
        {
            
            iCodLotacao = new ListItem(linha.Lotacao, linha.Cod_Lotacao.ToString());
            if (usuarioSelecionado.Rows[0]["cod_lotacao"].ToString() == linha.Cod_Lotacao.ToString())
                indice = i;
            Cod_Lotacao.Items.Add(iCodLotacao);
            i += 1;
        }
        Cod_Lotacao.SelectedIndex = indice;
        ///////////////////////////////////////////////////////////////////

        //Preenche o campo de lotação
        i = 0;
        indice = 0;
        Usuarios_LotacaoTableAdapter lAdapter = new Usuarios_LotacaoTableAdapter();
        DataTable lotacoes = lAdapter.GetLotacaoByCod_Gerencia(Convert.ToInt32(Cod_Lotacao.SelectedValue));
        if (lotacoes.Rows.Count > 0)
        {
            foreach (Geral.Usuarios_LotacaoRow linha2 in lotacoes.Rows)
            {
                ListItem iLotacao = new ListItem(linha2.Lotacao, linha2.Lotacao);
                if (usuarioSelecionado.Rows[0]["lotacao"].ToString() == linha2.Lotacao.ToString())
                    indice = i;
                Lotacao.Items.Add(iLotacao);
                i += 1;
            }
            Lotacao.SelectedIndex = indice;
        }
        ////////////////////////////////////////////////////////

        //Preenche o campo acumula gerência
        if (usuarioSelecionado.Rows[0]["acumula_gerencia"].ToString() == "0")
        {
            iCodLotacao = new ListItem("Selecione a gerência", "0");
            Acumula_Gerencia.Items.Add(iCodLotacao);
        }
        else
        {
            iCodLotacao = new ListItem("Nenhuma", "0");
            Acumula_Gerencia.Items.Add(iCodLotacao);
        }
        i = 0;
        indice = 0;
        foreach (Geral.UnidadesRow linha in unidades.Rows)
        {
            i += 1;
            iCodLotacao = new ListItem(linha.Lotacao, linha.Cod_Lotacao.ToString());
            if (usuarioSelecionado.Rows[0]["acumula_gerencia"].ToString() == linha.Cod_Lotacao.ToString())
                indice = i;
            Acumula_Gerencia.Items.Add(iCodLotacao);
            
        }
        Acumula_Gerencia.SelectedIndex = indice;
        //////////////////////////////////////////////////
        
        if (usuarioSelecionado.Rows[0]["lib_doc_grh"].ToString() != "")
            Lib_Doc_GRH.Checked = (bool) usuarioSelecionado.Rows[0]["lib_doc_grh"];
        Validade_Lib_Doc_GRH.Value = usuarioSelecionado.Rows[0]["validade_lib_doc_grh"].ToString();
        if (usuarioSelecionado.Rows[0]["lib_sol_veic"].ToString() != "")
            Lib_Sol_Veic.Checked = (bool)usuarioSelecionado.Rows[0]["lib_sol_veic"];
        Validade_Lib_Sol_Veic.Value = usuarioSelecionado.Rows[0]["validade_lib_sol_veic"].ToString();
        if (usuarioSelecionado.Rows[0]["acesso_sistema_sp"].ToString() != "")
            Acesso_Sistema_SP.Checked = (bool)usuarioSelecionado.Rows[0]["acesso_sistema_sp"];
        Validade_Acesso_Sistema_SP.Value = usuarioSelecionado.Rows[0]["validade_acesso_sistema_SP"].ToString();
        if (usuarioSelecionado.Rows[0]["acesso_sistema_sdp"].ToString() != "")
            Acesso_Sistema_SDP.Checked = (bool)usuarioSelecionado.Rows[0]["acesso_sistema_sdp"];
        Validade_Acesso_Sistema_SDP.Value = usuarioSelecionado.Rows[0]["validade_acesso_sistema_SDP"].ToString();
        Validade_Acumula_Gerencia.Value = usuarioSelecionado.Rows[0]["validade_acumula_gerencia"].ToString();
        if (usuarioSelecionado.Rows[0]["acesso_sistema_CPD"].ToString() != "")
            Acesso_Sistema_CPD.Checked = (bool)usuarioSelecionado.Rows[0]["acesso_sistema_CPD"];
        Validade_Acesso_Sistema_CPD.Value = usuarioSelecionado.Rows[0]["validade_acesso_sistema_cpd"].ToString();
        if (usuarioSelecionado.Rows[0]["acesso_sistema_gsg"].ToString() != "")
            Acesso_Sistema_GSG.Checked = (bool)usuarioSelecionado.Rows[0]["acesso_sistema_gsg"];
        Validade_Acesso_Sistema_GSG.Value = usuarioSelecionado.Rows[0]["validade_acesso_sistema_gsg"].ToString();
        if (usuarioSelecionado.Rows[0]["acesso_sistema_SCPA"].ToString() != "")
            Acesso_Sistema_SCPA.Checked = (bool)usuarioSelecionado.Rows[0]["acesso_sistema_SCPA"];
        Validade_Acesso_Sistema_SCPA.Value = usuarioSelecionado.Rows[0]["validade_acesso_sistema_SCPA"].ToString();
        if (usuarioSelecionado.Rows[0]["autoriza_xerox"].ToString() != "")
            Autoriza_Xerox.Checked = (bool)usuarioSelecionado.Rows[0]["autoriza_xerox"];
        Validade_Autoriza_Xerox.Value = usuarioSelecionado.Rows[0]["validade_autoriza_xerox"].ToString();
        if (usuarioSelecionado.Rows[0]["baixa_xerox"].ToString() != "")
            Baixa_Xerox.Checked = (bool)usuarioSelecionado.Rows[0]["baixa_xerox"];
        Validade_Baixa_Xerox.Value = usuarioSelecionado.Rows[0]["validade_baixa_xerox"].ToString();
        if (usuarioSelecionado.Rows[0]["acesso_faculdade"].ToString() != "")
            Acesso_Faculdade.Checked = (bool) usuarioSelecionado.Rows[0]["acesso_faculdade"];
        Validade_Acesso_Faculdade.Value = usuarioSelecionado.Rows[0]["validade_acesso_faculdade"].ToString();
        if (usuarioSelecionado.Rows[0]["programa_ferias"].ToString() != "")
            Programa_Ferias.Checked = (bool) usuarioSelecionado.Rows[0]["programa_ferias"];
        if (usuarioSelecionado.Rows[0]["gerente"].ToString() != "")
            Gerente.Checked = (bool)usuarioSelecionado.Rows[0]["gerente"];
        if (usuarioSelecionado.Rows[0]["conta_master"].ToString() != "")
            Conta_Master.Checked = (bool)usuarioSelecionado.Rows[0]["conta_master"];
        if (usuarioSelecionado.Rows[0]["nao_tem_ferias"].ToString() != "")
            Nao_Tem_Ferias.Checked = (bool)usuarioSelecionado.Rows[0]["nao_tem_ferias"];
        if (usuarioSelecionado.Rows[0]["DescontoLanchonete"].ToString() != "")
            DescontoLanchonete.Checked = (bool)usuarioSelecionado.Rows[0]["DescontoLanchonete"];

    }
    protected void bAlterar_Click(object sender, ImageClickEventArgs e)
    {
        lMensagem.Visible = true;
        lMensagem.ForeColor = System.Drawing.Color.Black;
        if (dChapa.SelectedValue == "-1")
        {
            lMensagem.Text = "Selecione o funcionário";
            lMensagem.ForeColor = System.Drawing.Color.Red;
        }
        else
        {
            GeralBLL instrucao = new GeralBLL();
            DateTime? validadeLibDocGRH = null;
            DateTime? validadeLibSolVeic = null;
            DateTime? validadeAcessoSistemaSP = null;
            DateTime? validadeAcessoSistemaCPD = null;
            DateTime? validadeAcessoSistemaGSG = null;
            DateTime? validadeAcessoSistemaSDP = null;
            DateTime? validadeAcessoSistemaSCPA = null;
            DateTime? validadeAcessoSistemaUEAD = null;
            DateTime? validadeAutorizaXerox = null;
            DateTime? validadeBaixaXerox = null;
            DateTime? validadeAcessoFaculdade = null;
            DateTime? validadeAcumulaGerencia = null;
            DateTime? vencimentoFeriasDele = null;

            if (Validade_Lib_Doc_GRH.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                validadeLibDocGRH = Validade_Lib_Doc_GRH.Date;
            if (Validade_Lib_Sol_Veic.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                validadeLibSolVeic = Validade_Lib_Sol_Veic.Date;
            if (Validade_Acesso_Sistema_SP.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                validadeAcessoSistemaSP = Validade_Acesso_Sistema_SP.Date;
            if (Validade_Acesso_Sistema_CPD.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                validadeAcessoSistemaCPD = Validade_Acesso_Sistema_CPD.Date;
            if (Validade_Acesso_Sistema_GSG.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                validadeAcessoSistemaGSG = Validade_Acesso_Sistema_GSG.Date;
            if (Validade_Acesso_Sistema_SDP.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                validadeAcessoSistemaSDP = Validade_Acesso_Sistema_SDP.Date;
            if (Validade_Acesso_Sistema_SCPA.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                validadeAcessoSistemaSCPA = Validade_Acesso_Sistema_SCPA.Date;
            if (Validade_Acesso_Sistema_UEAD.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                validadeAcessoSistemaUEAD = Validade_Acesso_Sistema_UEAD.Date;
            if (Validade_Autoriza_Xerox.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                validadeAutorizaXerox = Validade_Autoriza_Xerox.Date;
            if (Validade_Baixa_Xerox.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                validadeBaixaXerox = Validade_Baixa_Xerox.Date;
            if (Validade_Acesso_Faculdade.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                validadeAcessoFaculdade = Validade_Acesso_Faculdade.Date;
            if (Validade_Acumula_Gerencia.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                validadeAcumulaGerencia = Validade_Acumula_Gerencia.Date;
            if (Vencimento_Ferias_Dele.Date.ToString("d/ m/ yyyy") != "1/ 0/ 0001")
                vencimentoFeriasDele = Vencimento_Ferias_Dele.Date;

            string strSenha = "";
            if (senha.Text == "")
                strSenha = Session["senha"].ToString();
            else
                strSenha = senha.Text;

            if (instrucao.AtualizaUsuario(chapa.Text, dChapa.SelectedValue, nome.Text, cpf.Text, cargo.Text, email.Text, Lotacao.SelectedItem.ToString(), Convert.ToInt32(Cod_Lotacao.SelectedValue), Lib_Doc_GRH.Checked, validadeLibDocGRH, Lib_Sol_Veic.Checked, validadeLibSolVeic, Acesso_Sistema_SP.Checked, validadeAcessoSistemaSP, Acesso_Sistema_CPD.Checked, validadeAcessoSistemaCPD, Acesso_Sistema_GSG.Checked, validadeAcessoSistemaGSG, Acesso_Sistema_SDP.Checked, validadeAcessoSistemaSDP, Acesso_Sistema_SCPA.Checked, validadeAcessoSistemaSCPA, Autoriza_Xerox.Checked, validadeAutorizaXerox, Baixa_Xerox.Checked, validadeBaixaXerox, Acesso_Faculdade.Checked, validadeAcessoFaculdade, Programa_Ferias.Checked, Gerente.Checked, Conta_Master.Checked, Nao_Tem_Ferias.Checked, Convert.ToInt32(Acumula_Gerencia.SelectedValue), validadeAcumulaGerencia, Acesso_Sistema_UEAD.Checked, validadeAcessoSistemaUEAD, Registrar_Ferias_Dele.Checked, vencimentoFeriasDele, DescontoLanchonete.Checked, cAcessoOcorrenciasPonto.Checked, cComunicacaoAulas.Checked))
                Response.Redirect("http://www.pe.senac.br/intranet.net/mensagens_sistema.aspx?id_mensagem=16");
            else
                lMensagem.Text = "Ocorreu um problema na inserção do usuário";
        }
    }
    protected void Cod_Lotacao_SelectedIndexChanged(object sender, EventArgs e)
    {
        Lotacao.Items.Clear();
        ListItem iLotacao = new ListItem("Selecione a lotação", "-1");
        Lotacao.Items.Add(iLotacao);
        Usuarios_LotacaoTableAdapter lAdapter = new Usuarios_LotacaoTableAdapter();
        DataTable lotacoes = null;
        if (Cod_Lotacao.SelectedValue.ToString() != "")
            lotacoes = lAdapter.GetLotacaoByCod_Gerencia(Convert.ToInt32(Cod_Lotacao.SelectedValue));
        else
            lotacoes = lAdapter.GetLotacaoByCod_Gerencia(0);
        foreach (Geral.Usuarios_LotacaoRow linha2 in lotacoes.Rows)
        {
            iLotacao = new ListItem(linha2.Lotacao, linha2.Lotacao);
            Lotacao.Items.Add(iLotacao);
        }

        ListItem iCodLotacao = new ListItem("Selecione a gerência", "0");
        Acumula_Gerencia.Items.Add(iCodLotacao);

        UnidadesTableAdapter adapter = new UnidadesTableAdapter();
        DataTable unidades = adapter.GetUnidades();
        foreach (Geral.UnidadesRow linha in unidades.Rows)
        {
            iCodLotacao = new ListItem(linha.Lotacao, linha.Cod_Lotacao.ToString());
            Acumula_Gerencia.Items.Add(iCodLotacao);
        }
    }
    protected void bBaixar_Click(object sender, ImageClickEventArgs e)
    {
        lMensagem.Visible = true;
        lMensagem.ForeColor = System.Drawing.Color.Black;
        if (dChapa.SelectedValue == "0")
        {
            lMensagem.Text = "Selecione o funcionário";
            lMensagem.ForeColor = System.Drawing.Color.Red;
        }
        else
        {
            GeralBLL instrucao = new GeralBLL();
            if (instrucao.BaixaUsuario(dChapa.SelectedValue))
                Response.Redirect("http://www.pe.senac.br/intranet.net/mensagens_sistema.aspx?id_mensagem=17");
            else
                lMensagem.Text = "Ocorreu um problema na inserção do usuário";
        }
    }
    protected void bReativar_Click(object sender, ImageClickEventArgs e)
    {
        lMensagem.Visible = true;
        lMensagem.ForeColor = System.Drawing.Color.Black;
        if (dChapa.SelectedValue == "0")
        {
            lMensagem.Text = "Selecione o funcionário";
            lMensagem.ForeColor = System.Drawing.Color.Red;
        }
        else
        {
            GeralBLL instrucao = new GeralBLL();
            if (instrucao.ReativaUsuario(dChapa.SelectedValue))
                Response.Redirect("http://www.pe.senac.br/intranet.net/mensagens_sistema.aspx?id_mensagem=18");
            else
                lMensagem.Text = "Ocorreu um problema na inserção do usuário";
        }

    }
    protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
    {
        
    }

    private bool InserirUsuario(string chapa, string nome, string cpf, string cargo, string email, string lotacao, int cod_lotacao, string senha, bool lib_doc_grh, DateTime? validade_lib_doc_grh,
                                bool lib_sol_veic, DateTime? validade_lib_sol_veic, bool acesso_sistema_sp, DateTime? validade_acesso_sistema_sp, bool acesso_sistema_cpd, DateTime? validade_acesso_sistema_cpd,
                                bool acesso_sistema_gsg, DateTime? validade_acesso_sistema_gsg, bool acesso_sistema_sdp, DateTime? validade_acesso_sistema_sdp, bool acesso_sistema_scpa,
                                DateTime? validade_acesso_sistema_scpa, bool autoriza_xerox, DateTime? validade_autoriza_xerox, bool baixa_xerox, DateTime? validade_baixa_xerox,
                                bool acesso_faculdade, DateTime? validade_acesso_faculdade, bool programa_ferias, bool gerente, bool conta_master, bool nao_tem_ferias, int acumula_gerencia,
                                DateTime? validade_acumula_gerencia, bool acesso_sistema_uead, DateTime? validade_acesso_sistema_uead, bool descontoLanchonete, bool acessoOcorrenciasPonto, bool comunicacaoAulas)
    {
        SqlCommand command = new SqlCommand(@"INSERT INTO Usuarios (Chapa, Nome, CPF, Cargo, Email, Lotacao, Cod_Lotacao, Senha, Lib_Doc_GRH, Validade_Lib_Doc_GRH, Lib_Sol_Veic,
                                                                    validade_Lib_Sol_Veic, Acesso_Sistema_SP, validade_Acesso_Sistema_SP, Acesso_Sistema_CPD, Validade_Acesso_Sistema_CPD, 
                                                                    Acesso_Sistema_GSG, Validade_Acesso_Sistema_GSG, Acesso_Sistema_SDP, Validade_Acesso_Sistema_SDP, Acesso_Sistema_SCPA, 
                                                                    Validade_Acesso_Sistema_SCPA, Autoriza_Xerox, Validade_Autoriza_Xerox, Baixa_Xerox, Validade_Baixa_Xerox, 
                                                                    Acesso_Faculdade, Validade_Acesso_Faculdade, Programa_Ferias, Gerente, Conta_Master, Nao_Tem_Ferias, Acumula_Gerencia, 
                                                                    Validade_Acumula_Gerencia, Acesso_Sistema_UEAD, Validade_Acesso_Sistema_UEAD, DescontoLanchonete, AcessoOcorrenciasPonto, ComunicacaoAulas, 
                                                                    Primeiro_Acesso_Na_Intranet) 
                                                            VALUES (@Chapa, @Nome, @CPF, @Cargo, @Email, @Lotacao, @Cod_Lotacao, @Senha, @Lib_Doc_GRH, @Validade_Lib_Doc_GRH, @Lib_Sol_Veic,
                                                                    @Validade_Lib_Sol_Veic, @Acesso_Sistema_SP, @validade_Acesso_Sistema_SP, @Acesso_Sistema_CPD, @Validade_Acesso_Sistema_CPD, 
                                                                    @Acesso_Sistema_GSG, @Validade_Acesso_Sistema_GSG, @Acesso_Sistema_SDP, @Validade_Acesso_Sistema_SDP, @Acesso_Sistema_SCPA, 
                                                                    @Validade_Acesso_Sistema_SCPA, @Autoriza_Xerox, @Validade_Autoriza_Xerox, @Baixa_Xerox, @Validade_Baixa_Xerox, 
                                                                    @Acesso_Faculdade, @Validade_Acesso_Faculdade, @Programa_Ferias, @Gerente, @Conta_Master, @Nao_Tem_Ferias, @Acumula_Gerencia, 
                                                                    @Validade_Acumula_Gerencia, @Acesso_Sistema_UEAD, @Validade_Acesso_Sistema_UEAD, @DescontoLanchonete, @AcessoOcorrenciasPonto, @ComunicacaoAulas, 
                                                                    @primeiro_acesso_na_intranet);");
        
        #region Parâmetros para o Command
        //Linha 1
        command.Parameters.Add(new SqlParameter("Chapa", chapa));
        command.Parameters.Add(new SqlParameter("Nome", nome));
        command.Parameters.Add(new SqlParameter("CPF", cpf));
        command.Parameters.Add(new SqlParameter("Cargo", cargo));
        command.Parameters.Add(new SqlParameter("Email", email));
        command.Parameters.Add(new SqlParameter("Lotacao", lotacao));
        command.Parameters.Add(new SqlParameter("Cod_Lotacao", cod_lotacao));
        command.Parameters.Add(new SqlParameter("Senha", senha));

        command.Parameters.Add(new SqlParameter("Lib_Doc_GRH", lib_doc_grh));
        if (validade_lib_doc_grh.HasValue)
            command.Parameters.Add(new SqlParameter("Validade_Lib_Doc_GRH", validade_lib_doc_grh));
        else
            command.Parameters.Add(new SqlParameter("Validade_Lib_Doc_GRH", DBNull.Value));

        command.Parameters.Add(new SqlParameter("Lib_Sol_Veic", lib_sol_veic));
        //Linha 2
        if (validade_lib_sol_veic.HasValue)
            command.Parameters.Add(new SqlParameter("validade_Lib_Sol_Veic", validade_lib_sol_veic));
        else
            command.Parameters.Add(new SqlParameter("validade_Lib_Sol_Veic", DBNull.Value));

        command.Parameters.Add(new SqlParameter("Acesso_Sistema_SP", acesso_sistema_sp));
        if (validade_acesso_sistema_sp.HasValue)
            command.Parameters.Add(new SqlParameter("validade_Acesso_Sistema_SP", validade_acesso_sistema_sp));
        else
            command.Parameters.Add(new SqlParameter("validade_Acesso_Sistema_SP", DBNull.Value));
        
        command.Parameters.Add(new SqlParameter("Acesso_Sistema_CPD", acesso_sistema_cpd));
        if (validade_acesso_sistema_cpd.HasValue)
            command.Parameters.Add(new SqlParameter("Validade_Acesso_Sistema_CPD", validade_acesso_sistema_cpd));
        else
            command.Parameters.Add(new SqlParameter("Validade_Acesso_Sistema_CPD", DBNull.Value));
        //Linha 3
        command.Parameters.Add(new SqlParameter("Acesso_Sistema_GSG", acesso_sistema_gsg));
        if (validade_acesso_sistema_gsg.HasValue)
            command.Parameters.Add(new SqlParameter("Validade_Acesso_Sistema_GSG", validade_acesso_sistema_gsg));
        else
            command.Parameters.Add(new SqlParameter("Validade_Acesso_Sistema_GSG", DBNull.Value));

        command.Parameters.Add(new SqlParameter("Acesso_Sistema_SDP", acesso_sistema_sdp));
        if (validade_acesso_sistema_sdp.HasValue)
            command.Parameters.Add(new SqlParameter("Validade_Acesso_Sistema_SDP", validade_acesso_sistema_sdp));
        else
            command.Parameters.Add(new SqlParameter("Validade_Acesso_Sistema_SDP", DBNull.Value));

        command.Parameters.Add(new SqlParameter("Acesso_Sistema_SCPA", acesso_sistema_scpa));
        //Linha 4
        if (validade_acesso_sistema_scpa.HasValue)
            command.Parameters.Add(new SqlParameter("Validade_Acesso_Sistema_SCPA", validade_acesso_sistema_scpa));
        else
            command.Parameters.Add(new SqlParameter("Validade_Acesso_Sistema_SCPA", DBNull.Value));

        command.Parameters.Add(new SqlParameter("Autoriza_Xerox", autoriza_xerox));
        if (validade_autoriza_xerox.HasValue)
            command.Parameters.Add(new SqlParameter("Validade_Autoriza_Xerox", validade_autoriza_xerox));
        else
            command.Parameters.Add(new SqlParameter("Validade_Autoriza_Xerox", DBNull.Value));

        command.Parameters.Add(new SqlParameter("Baixa_Xerox", baixa_xerox));
        if (validade_baixa_xerox.HasValue)
            command.Parameters.Add(new SqlParameter("Validade_Baixa_Xerox", validade_baixa_xerox));
        else
            command.Parameters.Add(new SqlParameter("Validade_Baixa_Xerox", DBNull.Value));
        //Linha 5
        command.Parameters.Add(new SqlParameter("Acesso_Faculdade", acesso_faculdade));
        if (validade_acesso_faculdade.HasValue)
            command.Parameters.Add(new SqlParameter("Validade_Acesso_Faculdade", validade_acesso_faculdade));
        else
            command.Parameters.Add(new SqlParameter("Validade_Acesso_Faculdade", DBNull.Value));

        command.Parameters.Add(new SqlParameter("Programa_Ferias", programa_ferias));
        command.Parameters.Add(new SqlParameter("Gerente", gerente));
        command.Parameters.Add(new SqlParameter("Conta_Master", conta_master));
        command.Parameters.Add(new SqlParameter("Nao_Tem_Ferias", nao_tem_ferias));
        command.Parameters.Add(new SqlParameter("Acumula_Gerencia", acumula_gerencia));
        //Linha 6
        if (validade_acumula_gerencia.HasValue)
            command.Parameters.Add(new SqlParameter("Validade_Acumula_Gerencia", validade_acumula_gerencia));
        else
            command.Parameters.Add(new SqlParameter("Validade_Acumula_Gerencia", DBNull.Value));

        command.Parameters.Add(new SqlParameter("Acesso_Sistema_UEAD", acesso_sistema_uead));
        if (validade_acesso_sistema_uead.HasValue)
            command.Parameters.Add(new SqlParameter("Validade_Acesso_Sistema_UEAD", validade_acesso_sistema_uead));
        else
            command.Parameters.Add(new SqlParameter("Validade_Acesso_Sistema_UEAD", DBNull.Value));

        command.Parameters.Add(new SqlParameter("DescontoLanchonete", descontoLanchonete));
        command.Parameters.Add(new SqlParameter("AcessoOcorrenciasPonto", acessoOcorrenciasPonto));
        command.Parameters.Add(new SqlParameter("ComunicacaoAulas", comunicacaoAulas));
        //Linha 7
        command.Parameters.Add(new SqlParameter("primeiro_acesso_na_intranet", "s"));
        #endregion

        try
        {
            executarQuery(command);
            return true;
        }
        catch
        {
            return false; 
        }
    }

    #region Utilizado no método - InserirUsuario
    /// <summary>
    /// Método para efetuar a conexão com o banco de dados e executar a query passada por parâmetro
    /// </summary>
    /// <param name="command">Command com a query(e os parâmetros) a ser executada no banco de dados</param>
    /// <returns>Tabela com as informações recuperadas</returns>
    private DataTable executarQuery(SqlCommand command)
    {
        DataTable dt = new DataTable();
        SqlConnection conn = new SqlConnection("Data Source=sql;Initial Catalog=Intranet;Persist Security Info=True;User ID=intrausuario;Password=usr674532#5");

        try
        {
            command.Connection = conn;
            SqlDataAdapter adapter = new SqlDataAdapter(command);
            adapter.Fill(dt);
        }
        catch { throw; }
        finally { conn.Close(); }

        return dt;
    }
    #endregion
    
}
